Hop til hovedindhold
Document status35 - Reviewed

Entra ID Groups Overview


Purpose

  • Define how Entra ID groups are used for EnergyConnect infrastructure RBAC and application access.
  • Standardize naming, roles, and access flows.

Provisioning

  • All groups are auto-created per environment and customer by the Bicep platform prerequisites deployment.

Naming convention


Pattern

  • ec-{env}-{customer}-{scope}-{role}

Notes:

  • env: dev | test | qa | staging | prod
  • customer: short code (e.g., fm, ne)
  • scope: infra | app
  • role (by scope):
    • infra: reader | contributor | owner | vm-admin
    • app: cmpp-reader | cmpp-handler | system-reader | administrator | hangfire

Examples

  • Infrastructure: ec-test-fm-infra-contributor, ec-prod-ne-infra-owner, ec-qa-fm-infra-vm-admin
  • Application: ec-staging-ne-app-cmpp-reader, ec-test-fm-app-cmpp-handler, ec-prod-ne-app-system-reader, ec-prod-fm-app-administrator, ec-prod-fm-app-hangfire

Infrastructure Entra ID Groups


Description

  • Groups assign Azure RBAC at subscription scope.
  • Environment separation by design (e.g., Contributor in test, Reader/no access in prod).'

RBAC mapping

  • reader → Reader (subscription)
  • contributor → Contributor (subscription)
  • owner → Owner (subscription)
  • vm-admin → Virtual Machine Administrator Login (subscription)

Access flow (PIM)

  • All groups except Reader are PIM-enabled.
  • Eligible → Activate with justification/MFA → Access granted for the chosen duration (max 8 hours).
  • Missing eligibility: contact Managed Services or Kasper Søndergaard.

Access management

  • Fellowmind is always responsible for group membership management of the infrastructure groups, regardless of hosting tenant.

Application Entra ID Groups


Description

  • Used for Entra ID authentication/authorization to EnergyConnect applications (e.g., API, Hangfire dashboard).
  • Users receive app roles through group membership. Without the role, access is denied.

App role mapping (current)

  • cpmp-reader: Målepunkt Læser, Tilslutningspunkt Læser
  • cpmp-handler: Målepunkt Læser, Målepunkt Redaktør, Tilslutningspunkt Læser, Tilslutningspunkt Redaktør, Afstemning Læser, VEE Læser, Priselementer Læser
  • system-reader: Målepunkt Læser, Tilslutningspunkt Læser, Afstemning Læser, VEE Læser, Priselementer Læser
  • administrator: Målepunkt Læser, Målepunkt Redaktør, Tilslutningspunkt Læser, Tilslutningspunkt Redaktør, Afstemning Læser, VEE Læser, VEE Redaktør, Priselementer Læser, Priselementer Redaktør
  • hangfire: Hangfire

Access management

  • Hosted on Fellowmind tenant: Fellowmind adds members based on customer’s user list.
  • Hosted on customer tenant: customer admins manage membership.

cpmp-reader

graph TD cpmpreader["ec-{env}-{customer}- app-cpmp-reader"] cpmpreader -->|app role| cr1["Målepunkt Læser"] cpmpreader -->|app role| cr2["Tilslutningspunkt Læser"]

cpmp-handler

graph TD cpmphandler["ec-{env}-{customer}- app-cpmp-handler"] cpmphandler -->|app role| ch1["Målepunkt Læser"] cpmphandler -->|app role| ch2["Målepunkt Redaktør"] cpmphandler -->|app role| ch3["Tilslutningspunkt Læser"] cpmphandler -->|app role| ch4["Tilslutningspunkt Redaktør"] cpmphandler -->|app role| ch5["Afstemning Læser"] cpmphandler -->|app role| ch6["VEE Læser"] cpmphandler -->|app role| ch7["Priselementer Læser"]

system-reader

graph TD systemreader["ec-{env}-{customer}- app-system-reader"] systemreader -->|app role| sr1["Målepunkt Læser"] systemreader -->|app role| sr2["Tilslutningspunkt Læser"] systemreader -->|app role| sr3["Afstemning Læser"] systemreader -->|app role| sr4["VEE Læser"] systemreader -->|app role| sr5["Priselementer Læser"]

administrator

graph TD administrator["ec-{env}-{customer}- app-administrator"] administrator -->|app role| ad1["Målepunkt Læser"] administrator -->|app role| ad2["Målepunkt Redaktør"] administrator -->|app role| ad3["Tilslutningspunkt Læser"] administrator -->|app role| ad4["Tilslutningspunkt Redaktør"] administrator -->|app role| ad5["Afstemning Læser"] administrator -->|app role| ad6["VEE Læser"] administrator -->|app role| ad7["VEE Redaktør"] administrator -->|app role| ad8["Priselementer Læser"] administrator -->|app role| ad9["Priselementer Redaktør"]

hangfire

graph TD hangfire["ec-{env}-{customer}- app-hangfire"] hangfire -->|app role| hf1["Hangfire"]